package com.brainhealth.customer.service;

import java.util.List;

import com.brainhealth.common.core.domain.TreeSelect;
import com.brainhealth.common.enums.LearnCatetoryType;
import com.brainhealth.customer.domain.LearnCategory;

/**
 * 学习库分类树Service接口
 * 
 * @author wolong
 * @date 2023-04-23
 */
public interface ILearnCategoryService 
{
    /**
     * 查询学习库分类树
     * 
     * @param learnCategoryId 学习库分类树主键
     * @return 学习库分类树
     */
    public LearnCategory selectLearnCategoryByLearnCategoryId(Long learnCategoryId);

    /**
     * 查询学习库分类树列表
     * 
     * @param learnCategory 学习库分类树
     * @return 学习库分类树集合
     */
    public List<LearnCategory> selectLearnCategoryList(LearnCategory learnCategory);

    /**
     * 获取学习分类所有的叶子节点
     * @return
     */
    public List<LearnCategory> getLearnCategoryLeaf();

    /**
     * 根据分类类型获取学习分类
     * @param categoryType
     * @return
     */
    public List<LearnCategory> getLearnCategoryList(LearnCatetoryType categoryType);

    /**
     * 新增学习库分类树
     * 
     * @param learnCategory 学习库分类树
     * @return 结果
     */
    public int insertLearnCategory(LearnCategory learnCategory);

    /**
     * 修改学习库分类树
     * 
     * @param learnCategory 学习库分类树
     * @return 结果
     */
    public int updateLearnCategory(LearnCategory learnCategory);

    /**
     * 批量删除学习库分类树
     * 
     * @param learnCategoryIds 需要删除的学习库分类树主键集合
     * @return 结果
     */
    public int deleteLearnCategoryByLearnCategoryIds(Long[] learnCategoryIds);

    /**
     * 删除学习库分类树信息
     * 
     * @param learnCategoryId 学习库分类树主键
     * @return 结果
     */
    public int deleteLearnCategoryByLearnCategoryId(Long learnCategoryId);

    /**
     * 获取学习分类树形结构
     * @return
     */
    List<TreeSelect> getLearnCategoryTree();
}
